//package com.shine.commonlibrary.utils.api;
//
//
//import com.shine.commonlibrary.utils.api.bean.BaseResult;
//import com.shine.commonlibrary.utils.api.bean.RequestCom;
//import com.shine.commonlibrary.utils.base.BaseApplication;
//import com.shine.commonlibrary.utils.baserx.ApiException;
//import com.shine.commonlibrary.utils.baserx.RxSchedulers;
//import com.shine.commonlibrary.utils.utils.GlobalDataUtils;
//import com.shine.commonlibrary.utils.utils.LogUtils;
//import com.shine.commonlibrary.utils.utils.PhoneUtils;
//
//import java.io.File;
//import java.util.HashMap;
//import java.util.Map;
//
//import okhttp3.MediaType;
//import okhttp3.RequestBody;
//import rx.Observable;
//import rx.functions.Func1;
//
///**
// * Created by M_genius on 2017/9/8 13:00.
// * 描述：用于网络请求的总体管理，返回Observable对象
// */
//
//public class ApiRequestManager {
//
//    private void setComParams(Map<String, String> comParams) {
//        this.comParams = comParams;
//    }
//
//    private Map<String, String> comParams;
//
//    private ApiRequestManager() {
//    }
//
//    private volatile static ApiRequestManager instance;
//
//    public static ApiRequestManager getInstance() {
//        if (instance == null) {
//            synchronized (ApiRequestManager.class) {
//                if (instance == null) {
//                    instance = new ApiRequestManager();
//                }
//                return instance;
//            }
//        }
//        return instance;
//    }
//
//    /**
//     * 更新API公共请求参数（登录成功后更新相关参数）
//     *
//     * @param requestCom
//     */
//    public void updateRequestCom(RequestCom requestCom) {
//        GlobalDataUtils.saveRequestCom(requestCom);
//
//        Map<String, String> map = new HashMap<>();
//        map.put("rfid", requestCom.getRfid());
//        map.put("uid", requestCom.getUid());
//        map.put("deptID", requestCom.getDeptID());
//        map.put("deviceID", requestCom.getDeviceID());
//        map.put("token", requestCom.getToken());
//        map.put("version", requestCom.getVersion());
//        instance.setComParams(map);
//    }
//
//    /**
//     * 获取公共请求参数
//     * @return
//     */
//    public RequestCom getRequestCom() {
//        RequestCom requestCom = new RequestCom();
//        requestCom.setDeptID(comParams.get("deptID"));
//        requestCom.setDeviceID(comParams.get("deviceID"));
//        requestCom.setRfid(comParams.get("rfid"));
//        requestCom.setUid(comParams.get("uid"));
//        requestCom.setVersion(comParams.get("version"));
//        requestCom.setToken(comParams.get("token"));
//        return requestCom;
//    }
//
//
//    /**
//     * 登录时的RequestCom
//     *
//     * @param rfid
//     * @return
//     */
//    public static RequestCom getLoginRequestCom(String rfid) {
//        String deviceID = PhoneUtils.getIMEI();
//        RequestCom requestCom = new RequestCom();
//        requestCom.setDeviceID(deviceID);
//        requestCom.setVersion("");
//        requestCom.setToken("");
//        requestCom.setUid("4A1F2CEADEC951D8E050007F010036DF");
//        if (rfid == null) {
//            rfid = "";
//        }
//        requestCom.setRfid(rfid);
//        requestCom.setDeptID("");
//        return requestCom;
//    }
//
////    /**
////     * 主页，获取病人基本信息
////     *
////     * @param inpPatientRegId
////     * @return
////     */
////    public Observable<PatientBaseInfo> getPatientBaseInfo(String inpPatientRegId) {
////        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getPatientBaseInfo(inpPatientRegId, comParams).
////                map(new Func1<PatientBaseInfo, PatientBaseInfo>() {
////                    @Override
////                    public PatientBaseInfo call(PatientBaseInfo patientBaseInfo) {
////                        if (patientBaseInfo.isOk()) {
////                            LogUtils.logd("获取病人-->ID" + patientBaseInfo.getObj());
////                            return patientBaseInfo;
////                        }
////                        throw new ApiException(Integer.valueOf(patientBaseInfo.getResultCode()), patientBaseInfo.getResultInfo());
////                    }
////                });
////    }
//
//
////    /**
////     * 主页，获取病人详细信息
////     *
////     * @param inpPatientRegId
////     * @return
////     */
////    public Observable<PatientDetailInfo> getPatientDetailInfo(String inpPatientRegId) {
////        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getPatientDetailInfo(inpPatientRegId, comParams).
////                map(new Func1<PatientDetailInfo, PatientDetailInfo>() {
////                    @Override
////                    public PatientDetailInfo call(PatientDetailInfo patientDetailInfo) {
////                        if (patientDetailInfo.isOk()) {
////                            return patientDetailInfo;
////                        }
////                        throw new ApiException(Integer.valueOf(patientDetailInfo.getResultCode()), patientDetailInfo.getResultInfo());
////                    }
////                });
////    }
//
//    /**
//     * 获取入量信息
//     *
//     * @param inpPatientRegId
//     * @return
//     */
////    public Observable<InputQuantity> getInputQuantityInfo(String inpPatientRegId) {
////        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getInputQuantityInfo(inpPatientRegId, comParams).
////                map(new Func1<InputQuantity, InputQuantity>() {
////                    @Override
////                    public InputQuantity call(InputQuantity inputQuantityInfo) {
////                        if (inputQuantityInfo.isOk()) {
////                            return inputQuantityInfo;
////                        }
////                        throw new ApiException(Integer.valueOf(inputQuantityInfo.getResultCode()), inputQuantityInfo.getResultInfo());
////                    }
////                });
////    }
//
//    /**
//     * 获取出量信息
//     *
//     * @param inpPatientRegId
//     * @return
//     */
////    public Observable<OutputQuantity> getOutputQuantityInfo(String inpPatientRegId) {
////        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getOutputQuantityInfo(inpPatientRegId, comParams).
////                map(new Func1<OutputQuantity, OutputQuantity>() {
////                    @Override
////                    public OutputQuantity call(OutputQuantity outputQuantityInfo) {
////                        if (outputQuantityInfo.isOk()) {
////                            return outputQuantityInfo;
////                        }
////                        throw new ApiException(Integer.valueOf(outputQuantityInfo.getResultCode()), outputQuantityInfo.getResultInfo());
////                    }
////                });
////    }
//
//    /**
//     * 获取呼吸频率
//     *
//     * @param inpPatientRegId
//     * @return
//     */
////    public Observable<BreathFrequency> getBreathFrequencyInfo(String inpPatientRegId) {
////        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getBreathFrequencyInfo(inpPatientRegId, comParams).
////                map(new Func1<BreathFrequency, BreathFrequency>() {
////                    @Override
////                    public BreathFrequency call(BreathFrequency breathFrequencyInfo) {
////                        if (breathFrequencyInfo.isOk()) {
////                            return breathFrequencyInfo;
////                        }
////                        throw new ApiException(Integer.valueOf(breathFrequencyInfo.getResultCode()), breathFrequencyInfo.getResultInfo());
////                    }
////                });
////    }
//
//    /**
//     * 获取血压
//     *
//     * @param inpPatientRegId
//     * @return
//     */
////    public Observable<BloodPressure> getBloodPressureInfo(String inpPatientRegId) {
////        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getBloodPressureInfo(inpPatientRegId, comParams).
////                map(new Func1<BloodPressure, BloodPressure>() {
////                    @Override
////                    public BloodPressure call(BloodPressure bloodPressureInfo) {
////                        if (bloodPressureInfo.isOk()) {
////                            return bloodPressureInfo;
////                        }
////                        throw new ApiException(Integer.valueOf(bloodPressureInfo.getResultCode()), bloodPressureInfo.getResultInfo());
////                    }
////                });
////    }
//
//    /**
//     * 获取体温表
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<BaseResultOfObj<Temperature>> getTemperatureInfo(String inpPatientRegId, int pageNow, int rowSize) {
//
//        Map<String, String> map = new HashMap();
//        map.put("inpPatientRegId",inpPatientRegId);
//        map.put("pageNow", pageNow + "");
//        map.put("rowSize", rowSize + "");
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getTemperatureInfo(map, comParams);
//    }
//
//    /**
//     * 获取脉搏
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<BaseResultOfObj<Pulse>> getPulseInfo(String inpPatientRegId, int pageNow, int rowSize) {
//
//        Map<String, String> map = new HashMap();
//        map.put("inpPatientRegId",inpPatientRegId);
//        map.put("pageNow", pageNow + "");
//        map.put("rowSize", rowSize + "");
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getPulseInfo(map, comParams);
//    }
//
//
//    /**
//     * 获取检查结果
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<ExamineInfoEntity> getExamineInfo(String inpPatientRegId) {
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getExamineInfo(inpPatientRegId, comParams).
//                map(new Func1<ExamineInfoEntity, ExamineInfoEntity>() {
//                    @Override
//                    public ExamineInfoEntity call(ExamineInfoEntity examineInfoEntity) {
//                        if (examineInfoEntity.isOk()) {
//                            return examineInfoEntity;
//                        }
//                        throw new ApiException(Integer.valueOf(examineInfoEntity.getResultCode()), examineInfoEntity.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 获取检查结果
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<CheckoutInfoEntity> getCheckOutInfo(String inpPatientRegId) {
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getCheckOutInfo(inpPatientRegId, comParams).
//                map(new Func1<CheckoutInfoEntity, CheckoutInfoEntity>() {
//                    @Override
//                    public CheckoutInfoEntity call(CheckoutInfoEntity checkoutInfoEntity) {
//                        if (checkoutInfoEntity.isOk()) {
//                            return checkoutInfoEntity;
//                        }
//                        throw new ApiException(Integer.valueOf(checkoutInfoEntity.getResultCode()), checkoutInfoEntity.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 获取检查结果详细情况
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<CheckOutInfoDetailEntity> getCheckOutDetailInfo(String inpPatientRegId, String formsId) {
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getCheckOutDetailInfo(inpPatientRegId, formsId, comParams).
//                map(new Func1<CheckOutInfoDetailEntity, CheckOutInfoDetailEntity>() {
//                    @Override
//                    public CheckOutInfoDetailEntity call(CheckOutInfoDetailEntity checkOutInfoDetailEntity) {
//                        if (checkOutInfoDetailEntity.isOk()) {
//                            return checkOutInfoDetailEntity;
//                        }
//                        throw new ApiException(Integer.valueOf(checkOutInfoDetailEntity.getResultCode()), checkOutInfoDetailEntity.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 获取表格趋势图数据
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<CheckOutChartInfo> getCheckOutChartInfo(String inpPatientRegId, String itemCode) {
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getCheckOutChartInfo(inpPatientRegId, itemCode, comParams).
//                map(new Func1<CheckOutChartInfo, CheckOutChartInfo>() {
//                    @Override
//                    public CheckOutChartInfo call(CheckOutChartInfo checkOutChartInfo) {
//                        if (checkOutChartInfo.isOk()) {
//                            return checkOutChartInfo;
//                        }
//                        throw new ApiException(Integer.valueOf(checkOutChartInfo.getResultCode()), checkOutChartInfo.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 主页，获取病人详细信息
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<DoctorAdviceInfo> getDoctorAdviceInfo(String inpPatientRegId, String adviceType) {
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR)
//                .getDoctorAdviceInfo(inpPatientRegId, adviceType, comParams)
//                .map(new Func1<DoctorAdviceInfo, DoctorAdviceInfo>() {
//                    @Override
//                    public DoctorAdviceInfo call(DoctorAdviceInfo doctorAdviceInfo) {
//                        if (doctorAdviceInfo.isOk()) {
//                            return doctorAdviceInfo;
//                        }
//                        throw new ApiException(Integer.valueOf(doctorAdviceInfo.getResultCode()), doctorAdviceInfo.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 获取医嘱详情 getDoctorAdviceDetailInfo
//     *
//     * @param orderIds
//     * @return
//     */
//    public Observable<DoctorAdviceDetailInfo> getDoctorAdviceDetailInfo(Map<String, String> orderIds) {
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR)
//                .getDoctorAdviceDetailInfo(orderIds, comParams)
//                .map(new Func1<DoctorAdviceDetailInfo, DoctorAdviceDetailInfo>() {
//                    @Override
//                    public DoctorAdviceDetailInfo call(DoctorAdviceDetailInfo doctorAdviceDetailInfo) {
//                        if (doctorAdviceDetailInfo.isOk()) {
//                            return doctorAdviceDetailInfo;
//                        }
//                        throw new ApiException(Integer.valueOf(doctorAdviceDetailInfo.getResultCode()), doctorAdviceDetailInfo.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 主页，获取病人列表
//     *
//     * @return
//     */
//    public Observable<BaseResult<PatientInfoItem>> getPatientListInfo(int mPageNow, int size, String isFocus) {
//        Map<String, String> map = new HashMap();
//        map.put("pageNow", mPageNow + "");
//        map.put("rowSize", size + "");
//        map.put("isFocus", isFocus);
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getPatientListInfo(map, comParams);
//    }
//
//    /**
//     * 关注病人
//     *
//     * @return
//     */
//    public Observable<AttentionPatient> addAttentionPatient(String inpPatientRegId) {
//
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).addAttentionPatient(inpPatientRegId, comParams);
//    }
//
//    /**
//     * 取消关注
//     *
//     * @return
//     */
//    public Observable<AttentionPatient> cancelAttentionPatient(String inpPatientRegId) {
//
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).cancelAttentionPatient(inpPatientRegId, comParams);
//    }
//
//    /**
//     * 获取备忘录数据
//     *
//     * @param inpPatientRegId
//     * @return
//     */
//    public Observable<BaseResult<MemoInfoEntity>> getMemoInfo(String inpPatientRegId, int pageNow, int rowSize) {
//        Map<String, String> map = new HashMap();
//        map.put("inpPatientRegId", inpPatientRegId);
//        map.put("pageNow", pageNow + "");
//        map.put("rowSize", rowSize + "");
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR).getMemoInfo(map, comParams);
//    }
//
//    public Observable<MemoTextEntity> uploadMemoInfo(String inpPatientRegId, String memoType, String memoValue, String fileAbsolutePath, String fileFormerlyName, String filePath) {
//        Map<String, String> map = null;
//        if (memoType.equals(Constant.MEMO_TYPE_TEXT)) {
//            map = new HashMap<>();
//            map.put("inpPatientRegId", inpPatientRegId);
//            map.put("memoType", memoType);
//            map.put("memoValue", memoValue);
//
//        } else {
//            map = new HashMap<>();
//            map.put("inpPatientRegId", inpPatientRegId);
//            map.put("memoType", memoType);
//            map.put("memoValue", memoValue);
//            map.put("fileAbsolutePath", fileAbsolutePath);
//            map.put("fileFormerlyName", fileFormerlyName);
//            map.put("filePath", filePath);
//        }
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR)
//                .uploadMemoInfo(map, comParams)
//                .map(new Func1<MemoTextEntity, MemoTextEntity>() {
//                    @Override
//                    public MemoTextEntity call(MemoTextEntity memoTextEntity) {
//                        if (memoTextEntity.isOk()) {
//                            return memoTextEntity;
//                        }
//                        throw new ApiException(Integer.valueOf(memoTextEntity.getResultCode()), memoTextEntity.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 上传文件
//     *
//     * @param file
//     * @return
//     */
//    public Observable<SaveFileEntity> uploadFile(File file) {
//
//        Map<String, RequestBody> map = new HashMap<>();
//        RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
//        LogUtils.logd(file.getAbsolutePath());
//
//        if (file.getAbsolutePath().endsWith(".jpg")) {
//            map.put("file\"; filename=\"file.jpg", fileBody);
//        } else if (file.getAbsolutePath().endsWith(".amr")) {
//            map.put("file\"; filename=\"file.amr", fileBody);
//        }
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR)
//                .uploadFile(map)
//                .map(new Func1<SaveFileEntity, SaveFileEntity>() {
//                    @Override
//                    public SaveFileEntity call(SaveFileEntity saveFileEntity) {
//                        if (saveFileEntity.isOk()) {
//                            return saveFileEntity;
//                        }
//                        throw new ApiException(Integer.valueOf(saveFileEntity.getResultCode()), saveFileEntity.getResultInfo());
//                    }
//                });
//    }
//
//
//    /**
//     * RFID登录
//     *
//     * @param rfid
//     * @return
//     */
//    public Observable<BaseResult> loginWithRFID(String rfid) {
//        ApiRequestManager.getInstance().updateRequestCom(getLoginRequestCom(rfid));
//        comParams.put("rfid", rfid);
//        LogUtils.logd("RFID登录---->rdif:" + rfid);
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR)
//                .loginWithRFID(comParams).map(new Func1<BaseResult, BaseResult>() {
//                    @Override
//                    public BaseResult call(BaseResult baseResult) {
//                        if (baseResult.isOk()) {
//                            return baseResult;
//                        }
//                        throw new ApiException(baseResult.getResultCode(), baseResult.getResultInfo());
//                    }
//                });
//    }
//
//    /**
//     * 工号密码登录
//     *
//     * @param userNum
//     * @param password
//     * @return
//     */
//    public Observable<BaseResult<LoginObj>> loginWithUserNum(String userNum, String password) {
//        ApiRequestManager.getInstance().updateRequestCom(getLoginRequestCom(null));
//        LogUtils.logd("工号密码登录---->userNum:" + userNum + "  password:" + password);
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR)
//                .loginWithUserNum(userNum, password, comParams)
//                .map(new Func1<BaseResult<LoginObj>, BaseResult<LoginObj>>() {
//                    @Override
//                    public BaseResult<LoginObj> call(BaseResult<LoginObj> baseResult) {
//                        if (baseResult.isOk()) {
//                            return baseResult;
//                        }
//                        throw new ApiException(baseResult.getResultCode(), baseResult.getResultInfo());
//                    }
//                }).compose(RxSchedulers.<BaseResult<LoginObj>>io_main());
//    }
//
//    /**
//     * 工号密码登录
//     *
//     * @param softwareVersion
//     * @return
//     */
//    public Observable<UpdateAppEntity> checkAppUpdate(String softwareVersion) {
//        return ApiManager.getApiService(HostType.MOBILE_DOCTOR)
//                .checkAppUpdate(softwareVersion)
//                .map(new Func1<UpdateAppEntity, UpdateAppEntity>() {
//                    @Override
//                    public UpdateAppEntity call(UpdateAppEntity updateAppEntity) {
//                        if (updateAppEntity.isOk()) {
//                            return updateAppEntity;
//                        }
//                        throw new ApiException(Integer.valueOf(updateAppEntity.getResultCode()), updateAppEntity.getResultInfo());
//                    }
//                });
//    }
//
//    //===========================彭启========================================================================================
//
//}
